matplotlib:颜色、标记和线类型,刻度、标签和图例,注释与子图加工,将图片保存到文件,matplotlib 设置 |
您所在的位置:网站首页 › matplotlib 画图颜色 › matplotlib:颜色、标记和线类型,刻度、标签和图例,注释与子图加工,将图片保存到文件,matplotlib 设置 |
1.2 颜色、标记和线类型
matplotblib 的主函数 plot 接收带有x and y 轴的数组以及一些可选的字符串缩写参数来指名颜色和线类型。例如要用绿色括折号绘制 x 对 y 的线:ax.plot(x,y,'g--') 或者 ax.plot(x,y,linestyle='--',colur='g') 很多颜色缩写被用于常用颜色,可以指定十六进制的颜色代码(#CECECE)。 参考plot函数的文档查看所有线类型(jupyter 中使用plot?) 'b' blue 'g' green 'r' red 'c' cyan 'm' magenta 'y' yellow 'k' black 'w' white '-' solid line style '--' dashed line style '-.' dash-dot line style ':' dotted line style 折线图还可以又标记来凸显实际的数据点,matplotlib 创建一个连续的折线图,插入点之间有时分辨不出。标记可以是样式字符串的一部分,样式字符串中的线类型,标记类型必须在颜色后面。
后续的点默认式线性内插的。。。通过drawstyle 选项来更改
由于我们像plot 传递来 label ,我们可使用plt.legend 为每条线生成一个用于区分的图例。(无论是否又label选项都要调用plt.legend 来生成图例。) 1.3 刻度、标签和图例对于大多数图标修饰工作,有两种主要方式,使用程序性的pyplot 接口 和更多面向独享的原生 matplotlib API。 pyplot 接口设计为交互式使用,包含了 xlim, xticks 和 xticklabels 等方法。这些方法分别控制了绘图范围,刻度位置以及刻度标签。 在没有函数参数的情况下调用,返回当前的参数值(例如 plt.xlim() 返回当前的x 轴绘图范围)传入参数的情况下调用,例如:plt.xlim([0,10]) 会将x 轴的范围设置为0 到10.这些方法都会在当前活动的回落最近创建的 AxesSubplot 上生效,这些方法的每一个对应于子图自身的两个方法,比如 xlim 对应于 ax.get_lim and ax.set_lim 。好像使用 subplot 的方法更加显式,,,,(使用subplot_kw参数,就是add_subplot的参数) add_subplot参数(部分)含义projection子图的投影类型{None, ‘aitoff’, ‘hammer’, ‘lambert’, ‘mollweide’, ‘polar’, ‘rectilinear’, str},。。应该就是子图的类型,polar等于 projection=‘polar’alpha透明度facecolor fc颜色,轴面/轴的颜色labe xlabel ylabell标签title标题xlim ylim设置x轴视图限制。(bottom: float, top: float)xticklabels yticklabels刻度标签,列表xticks yticks刻度,列表 1.3.1 设置标题,轴标签,刻度和刻度标签
修改y 轴坐标是相同的过程,将上面的x 替换成 y 就行,轴的类型有一个 set 方法,可以批量设置绘图属性。 感觉用上subplots 不如在外面设置,在外面使用函数,功能还能多一些。 1.3.2 添加图例图例是用来区分绘图元素。最简单的方式是在添加每个图表时传递label 参数。
在图表上绘制自己的注释,而且注释中可能包含文本,箭头以及其他图形。你可以使用 text arrow annote 方法来添加注释和文本。 text 在图表上给定的坐标 (x,y) 根据可选的定制样式绘制文本。as.text(x,y,'hello world',family='monospace',fontsize=10) 绘制标普500指数从2007年以来的收盘价,并在图表中标注从2008到2009年金融危机的重要日期(阿巴阿巴阿巴阿巴) 还没见过 asof这个函数。。。DataFrame/Series.asof(where, subset=None) 返回where之前没有nan 的最后一行。subset, 对于dataframe ,使用指定的列来检查nan。 如果没有对应的值就返回nan。 >>> s = pd.Series([1, 2, np.nan, 4], index=[10, 20, 30, 40]) >>> s 10 1.0 20 2.0 30 NaN 40 4.0 dtype: float64 >>> s.asof(20) # 获得 索引20 的值 2.0 >>> s.asof([5, 20]) # 对于多个,第一个没有返回nan, 5 NaN 20 2.0 dtype: float64 >>> s.asof(30) # 这个是nan,就返回之前不是nan 的最后一行。 2.0 df = pd.DataFrame({'a': [10, 20, 30, 40, 50],'b': [None, None, None, None, 500]},index=[1,2,3,4,5]) df.asof([3.5,4.5]) # 考虑所有行的话,要找都不是nan 的, a b 3.5 NaN NaN 4.5 NaN NaN df.asof([3.5,4.5],subset=['a']) a b # 这里只考虑 a 3.5 30.0 NaN 4.5 40.0 NaN from datetime import datetime fig=plt.figure() ax=fig.add_subplot(1,1,1) data=pd.read_table('spx.csv',sep='\t',header=None,parse_dates=True,index_col=0) data.columns=['spx'] # (https://github.com/wesm/pydata-book/blob/2nd-edition/examples/spx.csv) 相关文件 spx=data['spx'] spx.plot(ax=ax,style='k-') crisis_data = [ (datetime(2007, 10, 11), 'Peak of bull market'), (datetime(2008, 3, 12), 'Bear Stearns Fails'), (datetime(2008, 9, 15), 'Lehman Bankruptcy') ] for date,label in crisis_data: # ax.annotate方法在指定的x和y 坐标上绘制标签 ax.annotate(label,xy=(date,spx.asof(date)+75),xytext=(date,spx.asof(date)+225),arrowprops=dict(facecolor='black', headwidth=4,width=2,headlength=4),horizontalalignment='left',verticalalignment='top') # 话说这位置,箭头宽度的参数的选择有什么方法吗。。。。 # 放大2007年 到 2010年 ax.set_xlim(['1/1/2007', '1/1/2011']) # ['2007-1-1', '2011-1-1'] 这样也行的,所有为啥要那么写 ax.set_ylim([600, 1800]) # 使用这两个方法手动设置图标的边界,而不是使用matplotlib的默认设置。 ax.set_title('Important dates in the 2008-2009 financial crisis')annotate(s,xy, args,* kwargs)** , 用文本text 注释点xy。 xytext 放置文本的位置(x,y)。如果为None,则默认为xy。xycoords 给出xy的坐标系。textcoords xytext 的坐标系arrowprops dict 在位置xy和xytext之间绘制箭头的属性comment_clip bool或无 当注释点xy在轴区域之外时是否绘制注释。**kwargs 传递给Text 的参数。。禁止套娃,,又是一片参数被恶心到了。。。脑补链接如果arrowprops不包含键“ arrowstyle”,则允许的键为: KeyDescriptionwidth箭头宽度(以磅为单位)headwidth箭头底部的宽度(以磅为单位)headlength箭头的长度(以磅为单位)shrink总长度的分数从两端缩小?Any key to matplotlib.patches.FancyArrowPatch如果arrowprops包含键“ arrowstyle”,则禁止使用上述键。的允许值为 ‘arrowstyle’: NameAttrs‘-’None‘->’head_length=0.4,head_width=0.2‘-[’widthB=1.0,lengthB=0.2,angleB=None‘|-|’widthA=1.0,widthB=1.0‘-|>’head_length=0.4,head_width=0.2‘ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |